package com.ink.grib.model;

import lombok.Setter;
import net.nullschool.grib2json.Options;

import java.io.File;

/**
 * @author LJK
 */
public class Grib2JsonOptions implements Options {
    /**
     * filter.discipline (fd)
     * select records with this discipline"
     */
    @Setter
    private Integer filterDiscipline;

    /**
     * filter.category (fc)
     * select records with this numeric category
     */
    @Setter
    private Integer filterCategory;

    /**
     * filter.parameter (fp)
     * select records with this numeric parameter, or the string "wind" for both u,v components
     */
    @Setter
    private String filterParameter;

    /**
     * filter.surface (fs)
     * select records with this numeric surface type
     */
    @Setter
    private Integer filterSurface;

    /**
     * filter.value (fv)
     * select records with this numeric surface value
     */
    @Setter
    private Double filterValue;

    /**
     * output (o)
     * write output to the specified file (default is stdout)
     */
    @Setter
    private File output;

    /**
     * compact (c)
     * enable compact Json formatting
     */
    @Setter
    private Boolean compactFormat;

    @Override
    public Integer getFilterDiscipline() {
        return filterDiscipline;
    }

    @Override
    public Integer getFilterCategory() {
        return filterCategory;
    }

    @Override
    public String getFilterParameter() {
        return filterParameter;
    }

    @Override
    public Integer getFilterSurface() {
        return filterSurface;
    }

    @Override
    public Double getFilterValue() {
        return filterValue;
    }

    @Override
    public boolean getShowHelp() {
        return false;
    }

    @Override
    public boolean getPrintNames() {
        return true;
    }

    @Override
    public boolean getPrintData() {
        return true;
    }

    @Override
    public boolean isCompactFormat() {
        return compactFormat;
    }

    @Override
    public boolean getEnableLogging() {
        return false;
    }

    @Override
    public File getOutput() {
        return output;
    }

    @Override
    public File getFile() {
        return null;
    }

    @Override
    public File getRecipe() {
        return null;
    }
}
